home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / System / HyperSimple / HyperXCmd.h < prev    next >
Text File  |  1990-11-30  |  11KB  |  274 lines

  1. /*
  2.     HyperXCmd.h
  3.     Definition file for HyperCard XCMDs and XFCNs in C.
  4.     Copyright Apple Computer, Inc.  1987-1990
  5.     All rights reserved
  6. */
  7.  
  8.  
  9. #ifndef  __HYPERXCMD__
  10. #define __HYPERXCMD__  1
  11.  
  12.  
  13. /* Unlike the old days, we have to make sure we have some definitions first… */
  14.  
  15. #ifndef THINK_C
  16.  
  17. #ifndef  __TYPES__
  18. #include <Types.h>
  19. #endif
  20. #ifndef __EVENTS__
  21. #include <events.h>
  22. #endif
  23. #ifndef __MENUS__
  24. #include <Menus.h>
  25. #endif
  26. #ifndef __TEXTEDIT__
  27. #include <TextEdit.h>
  28. #endif
  29. #ifndef __PACKAGES__
  30. #include <Packages.h>
  31. #endif
  32.  
  33. #else    /* THINK C 4.0.4 version */
  34.  
  35. /*    Think 4.0.4 version */
  36. #ifndef    _MacTypes_
  37. #include    <MacTypes.h>
  38. #endif    _MacTypes_
  39. #ifndef    _EventMgr_
  40. #include    <EventMgr.h>
  41. #endif    _EventMgr_
  42. #ifndef    _TextEdit_
  43. #include    <TextEdit.h>
  44. #endif    _TextEdit_
  45. #ifndef    _WindowMgr_
  46. #include    <WindowMgr.h>
  47. #endif    _WindowMgr_
  48. #ifndef    _MenuMgr_
  49. #include    <MenuMgr.h>
  50. #endif    _MenuMgr_
  51. #ifndef    _SANE_
  52. #include    <SANE.h>
  53. #endif    _SANE_
  54. #ifndef    _StdFilePkg_
  55. #include    <StdFilePkg.h>
  56. #endif    _StdFilePkg_
  57. #endif THINK_C
  58.  
  59.  
  60.  
  61. /* result codes */
  62. #define xresSucc                0
  63. #define xresFail                1
  64. #define xresNotImp                2
  65.  
  66. /* XCMDBlock constants for event.what... */
  67. #define xOpenEvt                1000    /* the first event after you are created */
  68. #define xCloseEvt                1001    /* your window is being forced close (Quit?) */
  69. #define xGiveUpEditEvt            1002    /* you are losing Edit... */
  70. #define xGiveUpSoundEvt            1003    /* you are losing the sound channel... */
  71. #define xHidePalettesEvt        1004    /* someone called HideHCPalettes */
  72. #define xShowPalettesEvt        1005    /* someone called ShowHCPalettes */
  73. #define xEditUndo                1100    /* Edit——Undo */
  74. #define xEditCut                1102    /* Edit——Cut */
  75. #define xEditCopy                1103    /* Edit——Copy */
  76. #define xEditPaste                1104    /* Edit——Paste */
  77. #define xEditClear                1105    /* Edit——Clear */
  78. #define xSendEvt                1200    /* script has sent you a message (text) */
  79. #define xSetPropEvt                1201    /* set a window property */
  80. #define xGetPropEvt                1202    /* get a window property */
  81. #define xCursorWithin            1300    /* cursor is within the window */
  82. #define xMenuEvt                1400    /* user has selected an item in your menu */
  83. #define xMBarClickedEvt            1401    /* a menu is about to be shown--update if needed */
  84.  
  85. #define xShowWatchInfoEvt        1501    /* for variable and message watchers */
  86. #define xScriptErrorEvt            1502    /* place the insertion point */
  87. #define xDebugErrorEvt            1503    /* user clicked "Debug" at a complaint */
  88. #define xDebugStepEvt            1504    /* hilite the line */
  89. #define xDebugTraceEvt            1505    /* same as step but tracing */
  90. #define xDebugFinishedEvt        1506    /* script ended */
  91.  
  92. #define paletteProc                2048    /* Windoid with grow box */
  93. #define palNoGrowProc            2052    /* standard Windoid defproc */
  94. #define palZoomProc                2056    /* Windoid with zoom and grow */
  95. #define palZoomNoGrow            2060    /* Windoid with zoom and no grow */
  96. #define hasZoom                    8
  97. #define hasTallTBar                2
  98. #define toggleHilite            1
  99.  
  100.  
  101. #define maxCachedChecks            16        /* maximum number of checkpoints in a script */
  102.  
  103.  
  104. /* paramCount is set to these constants when first calling special XThings */
  105. #define xMessageWatcherID        = -2;
  106. #define xVariableWatcherID        = -3;
  107. #define xScriptEditorID            = -4;
  108. #define xDebuggerID                = -5;
  109.  
  110. /* XTalkObjectPtr->objectKind values */
  111. #define stackObj                1
  112. #define bkgndObj                2
  113. #define cardObj                    3
  114. #define fieldObj                4
  115. #define buttonObj                5
  116.  
  117.  
  118. typedef struct XCmdBlock *XCmdPtr; 
  119. struct XCmdBlock {
  120.     short paramCount;         /* If = -1 then new use for XWindoids */
  121.     Handle params[16];
  122.     Handle returnValue;
  123.     Boolean passFlag;
  124.  
  125.     Ptr entryPoint;             /* to call back to HyperCard */
  126.     short request;
  127.     short result;
  128.     long inArgs[8];
  129.     long outArgs[4];
  130. };
  131.  
  132. typedef struct XWEventInfo *XWEventInfoPtr; 
  133. struct XWEventInfo {
  134.     EventRecord event;
  135.     WindowPtr eventWindow;
  136.     long eventParams[9];
  137.     Handle eventResult;
  138. };
  139.  
  140. typedef struct XTalkObject *XTalkObjectPtr;
  141. struct XTalkObject {
  142.     short objectKind;        /* stack, bkgnd, card, field, or button */
  143.     long stackNum;            /* reference number of the source stack */
  144.     long bkgndID;
  145.     long cardID;
  146.     long buttonID;
  147.     long fieldID;
  148. };
  149.  
  150.  
  151. typedef struct CheckPts *CheckPtPtr;
  152. typedef CheckPtPtr *CheckPtHandle; 
  153. struct CheckPts {
  154.     short checks[maxCachedChecks];
  155. };
  156.  
  157.  
  158. /****  HyperTalk Utilities  ****/
  159. extern pascal Handle EvalExpr(XCmdPtr paramPtr, StringPtr expr);
  160. extern pascal void SendCardMessage(XCmdPtr paramPtr, StringPtr msg);
  161. extern pascal void SendHCMessage(XCmdPtr paramPtr, StringPtr msg);
  162.  
  163. /****  Memory Utilities  ****/
  164. extern pascal Handle GetGlobal(XCmdPtr paramPtr, StringPtr globName);
  165. extern pascal void SetGlobal(XCmdPtr paramPtr, StringPtr globName, Handle globValue);
  166. extern pascal void ZeroBytes(XCmdPtr paramPtr, Ptr dstPtr, long longCount);
  167.  
  168. /****  String Utilities  ****/
  169. extern pascal void ScanToReturn(XCmdPtr paramPtr, Ptr *scanPtr);
  170. extern pascal void ScanToZero(XCmdPtr paramPtr, Ptr *scanPtr);
  171. extern pascal Boolean StringEqual(XCmdPtr paramPtr, StringPtr str1, StringPtr str2);
  172. extern pascal long StringLength(XCmdPtr paramPtr, Ptr strPtr);
  173. extern pascal Ptr StringMatch(XCmdPtr paramPtr, StringPtr pattern, Ptr target);
  174. extern pascal void ZeroTermHandle(XCmdPtr paramPtr, Handle hndl);                                
  175.  
  176. /****  String Conversions  ****/
  177. extern pascal void BoolToStr(XCmdPtr paramPtr, Boolean bool, StringPtr str);
  178. extern pascal void ExtToStr(XCmdPtr paramPtr, extended * num, StringPtr str);    /* 10/30/90 * wdh */
  179. extern pascal void LongToStr(XCmdPtr paramPtr, long posNum, StringPtr str);
  180. extern pascal void NumToHex(XCmdPtr paramPtr, long num, short nDigits, StringPtr str);
  181. extern pascal void NumToStr(XCmdPtr paramPtr, long num, StringPtr str);
  182. extern pascal Handle PasToZero(XCmdPtr paramPtr, StringPtr str);
  183. extern pascal void PointToStr(XCmdPtr paramPtr, Point pt, StringPtr str);                        
  184. extern pascal void RectToStr(XCmdPtr paramPtr, Rect *rct, StringPtr str);                        
  185. extern pascal void ReturnToPas(XCmdPtr paramPtr, Ptr zeroStr, StringPtr pasStr);
  186. extern pascal Boolean StrToBool(XCmdPtr paramPtr, StringPtr str);
  187. /* !!!!I think this is correct for StrToExt */
  188. extern pascal void StrToExt(XCmdPtr paramPtr, StringPtr str, extended * myext);    /* 10/31/90 wdh */
  189. /*extern pascal extended StrToExt(XCmdPtr paramPtr, StringPtr str);! */
  190. extern pascal long StrToLong(XCmdPtr paramPtr, StringPtr str);
  191. extern pascal long StrToNum(XCmdPtr paramPtr, StringPtr str);
  192. extern pascal void StrToPoint(XCmdPtr paramPtr, StringPtr str, Point *pt);                        
  193. extern pascal void StrToRect(XCmdPtr paramPtr, StringPtr str, Rect *rct);                        
  194. extern pascal void ZeroToPas(XCmdPtr paramPtr, Ptr zeroStr, StringPtr pasStr);
  195.  
  196. /****  Field Utilities  ****/
  197. extern pascal Handle GetFieldByID(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID);
  198. extern pascal Handle GetFieldByName(XCmdPtr paramPtr, Boolean cardFieldFlag, StringPtr fieldName);
  199. extern pascal Handle GetFieldByNum(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldNum);
  200. extern pascal void SetFieldByID(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID,
  201.     Handle fieldVal);
  202. extern pascal void SetFieldByName(XCmdPtr paramPtr, Boolean cardFieldFlag,
  203.     StringPtr fieldName, Handle fieldVal);
  204. extern pascal void SetFieldByNum(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldNum,
  205.     Handle fieldVal);
  206. extern pascal TEHandle GetFieldTE(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID,
  207.     short fieldNum, StringPtr fieldNamePtr);                                                    
  208. extern pascal void SetFieldTE(XCmdPtr paramPtr, Boolean cardFieldFlag, short fieldID,
  209.     short fieldNum, StringPtr fieldNamePtr, TEHandle fieldTE);                                    
  210.  
  211. /****  Miscellaneous Utilities  ****/
  212. extern pascal void BeginXSound(XCmdPtr paramPtr, WindowPtr window);
  213. extern pascal void EndXSound(XCmdPtr paramPtr);
  214. extern pascal Boolean GetFilePath(XCmdPtr paramPtr, StringPtr fileName, short numTypes, SFTypeList typeList,
  215.     Boolean askUser, OSType *fileType, StringPtr fullName);
  216. extern pascal void GetXResInfo(XCmdPtr paramPtr, short *resFile, short *resID, ResType *rType, StringPtr name);
  217. extern pascal void Notify(XCmdPtr paramPtr);
  218. extern pascal void SendHCEvent(XCmdPtr paramPtr, EventRecord *event);
  219. extern pascal void SendWindowMessage(XCmdPtr paramPtr, WindowPtr windPtr, 
  220.     StringPtr windowName, StringPtr msg);    /* 11/30/90 wdh msg was Handle: this is WRONG */
  221. extern pascal WindowPtr FrontDocWindow(XCmdPtr paramPtr);
  222. extern pascal long StackNameToNum(XCmdPtr paramPtr, StringPtr stackName);
  223. extern pascal short ShowHCAlert(XCmdPtr paramPtr, short dlgID, StringPtr promptStr);
  224.  
  225. /****  Creating and Disposing XWindoids  ****/  /* ALL NEW */
  226. extern pascal WindowPtr NewXWindow(XCmdPtr paramPtr, Rect *boundsRect, StringPtr title, 
  227.    Boolean visible, short procID, Boolean color, Boolean floating);
  228. extern pascal WindowPtr GetNewXWindow(XCmdPtr paramPtr, ResType templateType, short 
  229.    templateID, Boolean color, Boolean floating);
  230. extern pascal void CloseXWindow(XCmdPtr paramPtr, WindowPtr window);
  231.  
  232. /****  XWindoid Utilities  ****/  /* ALL NEW */
  233. extern pascal void HideHCPalettes(XCmdPtr paramPtr);
  234. extern pascal void ShowHCPalettes(XCmdPtr paramPtr);
  235. extern pascal void RegisterXWMenu(XCmdPtr paramPtr, WindowPtr window, 
  236.     MenuHandle menu, Boolean registering);
  237. extern pascal void SetXWIdleTime(XCmdPtr paramPtr, WindowPtr window, long interval);
  238. extern pascal void XWHasInterruptCode(XCmdPtr paramPtr, WindowPtr window, Boolean haveCode);
  239. extern pascal void XWAlwaysMoveHigh(XCmdPtr paramPtr, WindowPtr window, Boolean moveHigh);
  240. extern pascal void XWAllowReEntrancy(XCmdPtr paramPtr, WindowPtr window, Boolean allowSysEvts, Boolean allowHCEvts);
  241.  
  242. /****  Text Editing Utilities  ****/  /* ALL NEW */
  243. extern pascal void BeginXWEdit(XCmdPtr paramPtr, WindowPtr window);
  244. extern pascal void EndXWEdit(XCmdPtr paramPtr, WindowPtr window);
  245. extern pascal Ptr HCWordBreakProc(XCmdPtr paramPtr);
  246. extern pascal void PrintTEHandle(XCmdPtr paramPtr, TEHandle hTE, StringPtr header);
  247.  
  248. /****  Script Editor support  ****/  /* ALL NEW */
  249. extern pascal CheckPtHandle GetCheckPoints(XCmdPtr paramPtr);
  250. extern pascal void SetCheckPoints(XCmdPtr paramPtr, CheckPtHandle checkLines);
  251. extern pascal void FormatScript(XCmdPtr paramPtr, Handle scriptHndl, long *insertionPoint, Boolean 
  252.     quickFormat);
  253. extern pascal void SaveXWScript(XCmdPtr paramPtr, Handle scriptHndl);
  254. extern pascal void GetObjectName(XCmdPtr paramPtr, XTalkObjectPtr object, StringPtr objName);
  255. extern pascal void GetObjectScript(XCmdPtr paramPtr, XTalkObjectPtr object, Handle *scriptHndl);
  256. extern pascal void SetObjectScript(XCmdPtr paramPtr, XTalkObjectPtr object, Handle scriptHndl);
  257.  
  258. /****  Debugging Tools support  ****/  /* ALL NEW */
  259. extern pascal void AbortScript(XCmdPtr paramPtr);
  260. extern pascal void GoScript(XCmdPtr paramPtr);
  261. extern pascal void StepScript(XCmdPtr paramPtr, Boolean stepInto);
  262. extern pascal void CountHandlers(XCmdPtr paramPtr, short *handlerCount);
  263. extern pascal void GetHandlerInfo(XCmdPtr paramPtr, short handlerNum, StringPtr handlerName, 
  264.    StringPtr objectName, short *varCount);
  265. extern pascal void GetVarInfo(XCmdPtr paramPtr, short handlerNum, short varNum, StringPtr varName, 
  266.    Boolean *isGlobal, StringPtr varValue, Handle varHndl);
  267. extern pascal void SetVarValue(XCmdPtr paramPtr, short handlerNum, short varNum, Handle varHndl);
  268. extern pascal Handle GetStackCrawl(XCmdPtr paramPtr);
  269. extern pascal void TraceScript(XCmdPtr paramPtr, Boolean traceInto);
  270.  
  271.  
  272. #endif       /* UsingHyperXCmd */
  273.  
  274.